Repository navigation
feat: guardrails de seguridad en Pi + fix de .env desde la shell + v3.3.0 (Fase 04) - #25
Merged
Merged
Conversation
added 4 commits
October 30, 2026 00:30
Con la herramienta de lectura bloqueada, un modelo real usó grep … .env y devolvió el secreto: pre-read no veía la shell. pre-bash deniega ahora los comandos que vuelcan o cargan un .env real (cat, grep, head, sed, awk, source, una redirección <…). Los .env.example y comandos como cp .env.example .env o --env-file .env siguen permitidos. pre-read usa la misma regla. Aplica igual en Claude Code y en Pi.
…ude Code claude-permissions.cjs lee .claude/settings.json y settings.local.json y decide una llamada: Bash(…) con comodines y comandos compuestos, rutas estilo gitignore (~/, //, /), Read para grep/find/ls, Edit/Write para cualquier escritura y reglas de MCP. Zero-dep; lo usa la capa de Pi Agent.
Antes de cada herramienta (también las llamadas anidadas de codemode), la extensión aplica las reglas de hook-handler.cjs traduciendo todas sus salidas (exit 2 y deny bloquean, ask se confirma y sin interfaz se bloquea, additionalContext se anexa, post-edit formatea), las deny/ask de settings.json y una confirmación por sesión para las herramientas que el kit no conoce. Prueba de integración dentro de Pi 1.4.0 con el modelo simulado.
README con la sección También con Pi Agent (requisitos, equivalencias, contexto, seguridad, confianza del proyecto, modelos probados y privacidad), baseline y pins a v3.3.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fase 04 del plan de compatibilidad con Pi Agent y release v3.3.0. Con la base que entró en el #24, dev-starter-kit funciona en Pi con contexto y guardrails. Para Claude Code no cambia nada, salvo una corrección de seguridad que también lo protege.
Guardrails de seguridad en Pi. Pi no tiene sistema de permisos. Con
--pi, antes de cada herramienta, también en las llamadas anidadas desde codemode, la extensión aplica:hook-handler.cjs, el mismo que usa Claude). Traduce todas sus salidas:exit 2ydenybloquean, con el motivo para el modelo.askse confirma con la persona y, sin interfaz (pi -p), se bloquea.additionalContextse anexa al resultado, y traswrite/editcorre el formateo depost-edit.edit→edits[].new_stringpara el escaneo de secretos.denyyaskde.claude/settings.jsonysettings.local.json, con el helper nuevoclaude-permissions.cjs, que las evalúa como Claude Code. Cubre lo que ningún hook revisaba (leer~/.sshy~/.aws, también congrep/find/ls) y las reglas propias del equipo.Fix (también en Claude Code): leer un
.envreal desde la shell ya no esquivapre-read.grep … .enven vez de la herramienta de lectura y devolvió el secreto. Comprobé que en Claude Code pasa lo mismo.pre-bashdeniega ahora los comandos que vuelcan o cargan un.envreal:cat,grep,head,sed,awk,source/.,<….env.exampley comandos comocp .env.example .envo--env-file .envsiguen permitidos.Documentación.
#v3.3.0.Quedan para la 3.4.0: las reglas por carpeta en monorepo (
paths:) y la puerta de/loop-tasken Pi.Test plan
npm run validate(58 comprobaciones) ynode --test: todo en verde sin Pi, con las pruebas de integración omitidas.PI_BIN(Pi 1.4.0, modelo simulado): 195 pruebas en verde. La de guardrails recorre 12 llamadas reales:.env(conready congrepdesde bash),push --force,sudo, instalación sin interfaz, secretos enwriteyedit,~/.ssh(con unHOMEfalso), la reglaterraform destroydesettings.local.jsony la herramienta desconocida..env.exampley su edición, esta última con el aviso de archivo de entorno.claude-permissions.cjs: 8 pruebas (globs,~/.sshtambién como carpeta, comandos compuestos,prefijo:*, MCP, deny sobre ask,settings.local.json).pre-bash: 13 pruebas nuevas de.env(8 bloqueos y 5 casos permitidos).grep .env, quedó bloqueado, no intentó esquivarlo y propuso alternativas sin ver el valor. El secreto no apareció en ninguna parte de la sesión.npm install [email protected]": quedó bloqueado por falta de interfaz y propusopadStart()sin dependencia. No se instaló nada.pi: sus 5 pruebas corrieron dentro de Pi 1.4.0, ninguna omitida.Después del merge: tag anotado
v3.3.0sobre el commit de merge y smoke connpx -y github:lacasoft/dev-starter-kit#v3.3.0 --pi.